import os
import zipfile
import argparse

def unzip_files_to_named_folders(base_folder):
    """
    遍历 base_folder 目录及其所有子目录下的所有 .zip 文件，
    并将每个 .zip 文件解压到以其名字命名的文件夹中。
    
    :param base_folder: 基础目录路径
    """
    # 遍历基础目录及其所有子目录
    for root, dirs, files in os.walk(base_folder):
        for file in files:
            if file.lower().endswith('.zip'):
                # 获取.zip文件的完整路径
                zip_file_path = os.path.join(root, file)
                
                # 创建以其名字命名的文件夹（去掉.zip后缀）
                folder_name = os.path.splitext(file)[0]
                destination_folder = os.path.join(root, folder_name)
                
                # 如果目标文件夹不存在，则创建它
                if not os.path.exists(destination_folder):
                    os.makedirs(destination_folder)
                
                try:
                    # 解压ZIP文件到以其名字命名的文件夹
                    with zipfile.ZipFile(zip_file_path, 'r') as zip_ref:
                        zip_ref.extractall(destination_folder)
                    print(f"已将文件 {zip_file_path} 解压到 {destination_folder}")
                    
                    # 删除已解压的zip文件（可选）
                    # os.remove(zip_file_path)
                    # print(f"已删除已解压的zip文件 {zip_file_path}")
                except Exception as e:
                    print(f"解压文件时出错: {e}")

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='unzip file')
    parser.add_argument('--src', type=str, default='D:\\temp\\', help='pick video from src folder')

    args = parser.parse_args()

    src_base_folder = args.src
    # 调用函数执行操作
    unzip_files_to_named_folders(src_base_folder)


